/**
 * 2016，thor.com，all rights reserved。
 * 
 * Project：		palmmall-spi
 * Filename：	SMaintainBillService.java
 * Created：		2016年9月12日
 * Creator：		wolv
 */
package com.thor.palmmall.spi.maintain;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.thor.palmmall.spi.basic.SAssignInfo;
import com.thor.palmmall.spi.basic.SSignInInfo;
import com.thor.palmmall.spi.common.SOperateInfo;
import com.thor.palmmall.spi.common.SQueryResult;
import com.thor.palmmall.spi.common.SResponse;
import com.thor.palmmall.spi.common.SUserGroupLoadParam;

/**
 * @author wolv
 *
 */
@Path("/1/maintain")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface SMaintainBillService {

  @GET
  @Path("/types")
  SResponse<List<String>> getMainTypes();

  @POST
  @Path(value = "/create")
  SResponse<String> create(SMaintainBill bill, @QueryParam("") SOperateInfo operateInfo);

  @POST
  @Path(value = "/{id}")
  SResponse<SMaintainBill> get(@PathParam("id") String id, SUserGroupLoadParam param);

  @POST
  @Path(value = "/save")
  SResponse<Void> save(SMaintainBill bill, @QueryParam("") SOperateInfo operateInfo);

  @GET
  @Path(value = "/default")
  SResponse<SDefaultConfig> getDefaultConfig(@QueryParam("storeUuid") String storeUuid);

  @POST
  @Path(value = "/query")
  SResponse<SQueryResult<SMaintainBill>> query(SMaintainBillQueryParam param);

  @GET
  @Path(value = "/queryOutgoingState")
  SResponse<String[]> queryOutgoingState();

  @POST
  @Path(value = "/signIn")
  SResponse<Void> signIn(SSignInInfo signInInfo);

  @POST
  @Path(value = "/assign")
  SResponse<Void> assign(SAssignInfo assignInfo);
}
